package com.lianrui.app.order.money;

import com.lianrui.app.order.domain.PayCfg;
import com.lianrui.commons.exception.BusinessException;

/**
 * 功能描述：支付方式接口
 * 
 * @author LJQ
 * 
 * <br>2016年1月15日 上午11:11:24
 */
public interface IPayment<R> {
	
	/**
	 * 功能说明：底层支付处理
	 * @return
	 * @throws BusinessException
	 */
	R onPay() throws BusinessException;
	
	/**
	 * 功能说明：支付成功后的回调
	 * @return
	 * @throws BusinessException
	 */
	R onCallback() throws BusinessException;
	
	/**
	 * 功能说明：支付成功后的返回
	 * @return
	 * @throws BusinessException
	 */
	R onReturn() throws BusinessException;
	
	/**
	 * 功能说明：获取支付类型的编码
	 * @return
	 */
	int getId();
	
	/**
	 * 功能说明：获取该支付的配置信息
	 * @return
	 * @throws BusinessException
	 */
	PayCfg getPayCfg() throws BusinessException;
	
}
